package com.yazi.mxz.common.service;

import java.util.List;

import com.myframework.smhj.common.exception.MyException;
import com.myframework.smhj.hibernate.dao.Service;
import com.yazi.mxz.common.entity.beans.Company;
import com.yazi.mxz.common.entity.beans.SpecType;
import com.yazi.mxz.common.entity.beans.Store;

/**
 * Service接口：商品规格类型
 *
 * @author mo_yq5
 * @since 2016年6月1日
 */
public interface SpecTypeService extends Service<SpecType> {

	/**
	 * 根据商品类目、商品库、店铺商品获取相关的商品规格类型<br>
	 * 商品类目、店铺商品、商品库(由店铺商品知道)条件之间是“或者”关系
	 * @since 2016年6月1日
	 * @param catId 商品类目ID
	 * @param storeGoodsId 店铺商品ID
	 * @return
	 */
	List<SpecType> list(Long catId, Long storeGoodsId);

	/**
	 * 添加/编辑商品规格类型。<br>
	 * 如果specTypeId不为null，则为添加，否则为编辑。<br>
	 * 商品规格类型中的商品必须归属指定企业，否则抛出MyException。
	 * @since 2016年6月3日
	 * @param company 企业（会话对象）
	 * @param specType 商品规格类型（表单对象）
	 * @return
	 * @throws MyException
	 */
	SpecType addOrEditByCompany(Company company, SpecType specType)
			throws MyException;

	/**
	 * 添加/编辑商品规格类型。<br>
	 * 如果specTypeId不为null，则为添加，否则为编辑。<br>
	 * 商品规格类型中的店铺商品必须归属指定店铺，否则招聘MyException。
	 * @since 2016年6月3日
	 * @param store 店铺（会话对象）
	 * @param specType 商品规格类型（表单对象）
	 * @return
	 * @throws MyException
	 */
	SpecType addOrEditByStore(Store store, SpecType specType)
			throws MyException;
	
}
